<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libslic3r: src/libslic3r/PerimeterGenerator.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="Slic3r_192px_transparent.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libslic3r
   </div>
   <div id="projectbrief">Library for generating gcode from 3d models</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_f69e6fbaea45487e96bc9ed8ccf9ff8f.html">libslic3r</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">PerimeterGenerator.hpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_perimeter_generator_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef slic3r_PerimeterGenerator_hpp_</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define slic3r_PerimeterGenerator_hpp_</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="libslic3r_8h.html">libslic3r.h</a>&quot;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_ex_polygon_collection_8hpp.html">ExPolygonCollection.hpp</a>&quot;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_flow_8hpp.html">Flow.hpp</a>&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_polygon_8hpp.html">Polygon.hpp</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_print_config_8hpp.html">PrintConfig.hpp</a>&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_surface_collection_8hpp.html">SurfaceCollection.hpp</a>&quot;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_slic3r.html">Slic3r</a> {</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">// Hierarchy of perimeters.</span></div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator_loop.html">   15</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_slic3r_1_1_perimeter_generator_loop.html">PerimeterGeneratorLoop</a> {</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;    <span class="comment">// Polygon of this contour.</span></div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator_loop.html#aecdf6e4734ac148fe16601d1cea65c50">   18</a></span>&#160;    <a class="code" href="class_slic3r_1_1_polygon.html">Polygon</a> <a class="code" href="class_slic3r_1_1_perimeter_generator_loop.html#aecdf6e4734ac148fe16601d1cea65c50">polygon</a>;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;    <span class="comment">// Is it a contour or a hole?</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;    <span class="comment">// Contours are CCW oriented, holes are CW oriented.</span></div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator_loop.html#ad8c6733fb666837d391e29075456a38d">   21</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_slic3r_1_1_perimeter_generator_loop.html#ad8c6733fb666837d391e29075456a38d">is_contour</a>;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;    <span class="comment">// Depth in the hierarchy. External perimeter has depth = 0. An external perimeter could be both a contour and a hole.</span></div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator_loop.html#adaaece277fd3d568edbb3568aac5cf03">   23</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="class_slic3r_1_1_perimeter_generator_loop.html#adaaece277fd3d568edbb3568aac5cf03">depth</a>;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    <span class="comment">// Children contour, may be both CCW and CW oriented (outer contours or holes).</span></div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator_loop.html#a27cf76d469aaa41d40e3ab5874d9604d">   25</a></span>&#160;    std::vector&lt;PerimeterGeneratorLoop&gt; <a class="code" href="class_slic3r_1_1_perimeter_generator_loop.html#a27cf76d469aaa41d40e3ab5874d9604d">children</a>;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;    </div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator_loop.html#a060905e20e114a553da665a1a65fe88d">   27</a></span>&#160;    <a class="code" href="class_slic3r_1_1_perimeter_generator_loop.html#a060905e20e114a553da665a1a65fe88d">PerimeterGeneratorLoop</a>(<a class="code" href="class_slic3r_1_1_polygon.html">Polygon</a> polygon, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> depth)</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;        : polygon(polygon), is_contour(false), depth(depth)</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;        {};</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    <span class="comment">// External perimeter. It may be CCW or CW oriented (outer contour or hole contour).</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator_loop.html#aa528ebebf3d5c47e57f56cb5a2509bdb">   31</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_slic3r_1_1_perimeter_generator_loop.html#aa528ebebf3d5c47e57f56cb5a2509bdb">is_external</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;depth == 0; }</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="comment">// An island, which may have holes, but it does not have another internal island.</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_slic3r_1_1_perimeter_generator_loop.html#ad868bfeb1cab8525d3222a8f0bc1b339">is_internal_contour</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;};</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespace_slic3r.html#a2c2016d7ed740c735dd3a8903f1bbfbb">   36</a></span>&#160;<span class="keyword">typedef</span> std::vector&lt;PerimeterGeneratorLoop&gt; <a class="code" href="namespace_slic3r.html#a2c2016d7ed740c735dd3a8903f1bbfbb">PerimeterGeneratorLoops</a>;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html">   38</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_slic3r_1_1_perimeter_generator.html">PerimeterGenerator</a> {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="comment">// Inputs:</span></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#a762eb39e6ca12297fe06982065d7a54a">   41</a></span>&#160;    <span class="keyword">const</span> <a class="code" href="class_slic3r_1_1_surface_collection.html">SurfaceCollection</a>* <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a762eb39e6ca12297fe06982065d7a54a">slices</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#ab8fdc6f859da64a2799bdcd50d4962b5">   42</a></span>&#160;    <span class="keyword">const</span> <a class="code" href="class_slic3r_1_1_ex_polygon_collection.html">ExPolygonCollection</a>* <a class="code" href="class_slic3r_1_1_perimeter_generator.html#ab8fdc6f859da64a2799bdcd50d4962b5">lower_slices</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#a17404d4b9a616e82d470f3b6be40002a">   43</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a17404d4b9a616e82d470f3b6be40002a">layer_height</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#a1e2ebc75a65d57e82a42fc9922808e23">   44</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a1e2ebc75a65d57e82a42fc9922808e23">layer_id</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#a56b008bb63b6a19019bd7f02369d788e">   45</a></span>&#160;    <a class="code" href="class_slic3r_1_1_flow.html">Flow</a> <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a56b008bb63b6a19019bd7f02369d788e">perimeter_flow</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#a865ecb7073c6e5c49450780601fa5978">   46</a></span>&#160;    <a class="code" href="class_slic3r_1_1_flow.html">Flow</a> <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a865ecb7073c6e5c49450780601fa5978">ext_perimeter_flow</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#a07e2d8fc28c8bb83ca630bd64e89325c">   47</a></span>&#160;    <a class="code" href="class_slic3r_1_1_flow.html">Flow</a> <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a07e2d8fc28c8bb83ca630bd64e89325c">overhang_flow</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#a73b3ce8cae7604b24a2d145a498b286f">   48</a></span>&#160;    <a class="code" href="class_slic3r_1_1_flow.html">Flow</a> <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a73b3ce8cae7604b24a2d145a498b286f">solid_infill_flow</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#abe42138ffcf2ad0447a04dd48f3a4d5d">   49</a></span>&#160;    <a class="code" href="class_slic3r_1_1_print_region_config.html">PrintRegionConfig</a>* <a class="code" href="class_slic3r_1_1_perimeter_generator.html#abe42138ffcf2ad0447a04dd48f3a4d5d">config</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#a10b1dfc6771ad4f17350e1cb135acab4">   50</a></span>&#160;    <a class="code" href="class_slic3r_1_1_print_object_config.html">PrintObjectConfig</a>* <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a10b1dfc6771ad4f17350e1cb135acab4">object_config</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#aaeec28b31ab6da2ad2317a4bdd071382">   51</a></span>&#160;    <a class="code" href="class_slic3r_1_1_print_config.html">PrintConfig</a>* <a class="code" href="class_slic3r_1_1_perimeter_generator.html#aaeec28b31ab6da2ad2317a4bdd071382">print_config</a>;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="comment">// Outputs:</span></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#aff9a14ec9dd21936c66064106046f22f">   53</a></span>&#160;    <a class="code" href="class_slic3r_1_1_extrusion_entity_collection.html">ExtrusionEntityCollection</a>* <a class="code" href="class_slic3r_1_1_perimeter_generator.html#aff9a14ec9dd21936c66064106046f22f">loops</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#a1bd9ddce53f93513b485142ca575dbe7">   54</a></span>&#160;    <a class="code" href="class_slic3r_1_1_extrusion_entity_collection.html">ExtrusionEntityCollection</a>* <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a1bd9ddce53f93513b485142ca575dbe7">gap_fill</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#acaad2e06b061a4da14038dffac26d3d5">   55</a></span>&#160;    <a class="code" href="class_slic3r_1_1_surface_collection.html">SurfaceCollection</a>* <a class="code" href="class_slic3r_1_1_perimeter_generator.html#acaad2e06b061a4da14038dffac26d3d5">fill_surfaces</a>;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="class_slic3r_1_1_perimeter_generator.html#a2f5219586fbedfa7809dc078a850b2ea">   57</a></span>&#160;    <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a2f5219586fbedfa7809dc078a850b2ea">PerimeterGenerator</a>(</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        <span class="comment">// Input:</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        <span class="keyword">const</span> <a class="code" href="class_slic3r_1_1_surface_collection.html">SurfaceCollection</a>*    slices, </div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        <span class="keywordtype">double</span>                      layer_height,</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;        <a class="code" href="class_slic3r_1_1_flow.html">Flow</a>                        flow,</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        <a class="code" href="class_slic3r_1_1_print_region_config.html">PrintRegionConfig</a>*          config,</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        <a class="code" href="class_slic3r_1_1_print_object_config.html">PrintObjectConfig</a>*          object_config,</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        <a class="code" href="class_slic3r_1_1_print_config.html">PrintConfig</a>*                print_config,</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <span class="comment">// Output:</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        <span class="comment">// Loops with the external thin walls</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        <a class="code" href="class_slic3r_1_1_extrusion_entity_collection.html">ExtrusionEntityCollection</a>*  loops,</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        <span class="comment">// Gaps without the thin walls</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        <a class="code" href="class_slic3r_1_1_extrusion_entity_collection.html">ExtrusionEntityCollection</a>*  gap_fill,</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        <span class="comment">// Infills without the gap fills</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        <a class="code" href="class_slic3r_1_1_surface_collection.html">SurfaceCollection</a>*          fill_surfaces)</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;        : slices(slices), lower_slices(NULL), layer_height(layer_height),</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;            layer_id(-1), perimeter_flow(flow), ext_perimeter_flow(flow),</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;            overhang_flow(flow), solid_infill_flow(flow),</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;            config(config), object_config(object_config), print_config(print_config),</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;            loops(loops), gap_fill(gap_fill), fill_surfaces(fill_surfaces),</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;            _ext_mm3_per_mm(-1), _mm3_per_mm(-1), _mm3_per_mm_overhang(-1)</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        {};</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_slic3r_1_1_perimeter_generator.html#a8db5bfc53490dca111e6662d0d0b4a5b">process</a>();</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    </div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordtype">double</span> _ext_mm3_per_mm;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordtype">double</span> _mm3_per_mm;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="keywordtype">double</span> _mm3_per_mm_overhang;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <a class="code" href="namespace_slic3r.html#ac070ff2d90c6488a48adf1814cdae06c">Polygons</a> _lower_slices_p;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    </div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <a class="code" href="class_slic3r_1_1_extrusion_entity_collection.html">ExtrusionEntityCollection</a> _traverse_loops(<span class="keyword">const</span> PerimeterGeneratorLoops &amp;loops,</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        <a class="code" href="namespace_slic3r.html#ae215fce7feff06e36add3d6f37bfcd27">ThickPolylines</a> &amp;thin_walls) <span class="keyword">const</span>;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <a class="code" href="class_slic3r_1_1_extrusion_entity_collection.html">ExtrusionEntityCollection</a> _variable_width</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        (<span class="keyword">const</span> <a class="code" href="namespace_slic3r.html#ae215fce7feff06e36add3d6f37bfcd27">ThickPolylines</a> &amp;polylines, <a class="code" href="namespace_slic3r.html#aa0fe88d48b85b2859e710c114c5b76cc">ExtrusionRole</a> role, <a class="code" href="class_slic3r_1_1_flow.html">Flow</a> flow) <span class="keyword">const</span>;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;};</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;}</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a17404d4b9a616e82d470f3b6be40002a"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a17404d4b9a616e82d470f3b6be40002a">Slic3r::PerimeterGenerator::layer_height</a></div><div class="ttdeci">double layer_height</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:43</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a73b3ce8cae7604b24a2d145a498b286f"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a73b3ce8cae7604b24a2d145a498b286f">Slic3r::PerimeterGenerator::solid_infill_flow</a></div><div class="ttdeci">Flow solid_infill_flow</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:48</div></div>
<div class="ttc" id="namespace_slic3r_html_a2c2016d7ed740c735dd3a8903f1bbfbb"><div class="ttname"><a href="namespace_slic3r.html#a2c2016d7ed740c735dd3a8903f1bbfbb">Slic3r::PerimeterGeneratorLoops</a></div><div class="ttdeci">std::vector&lt; PerimeterGeneratorLoop &gt; PerimeterGeneratorLoops</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:36</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_ab8fdc6f859da64a2799bdcd50d4962b5"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#ab8fdc6f859da64a2799bdcd50d4962b5">Slic3r::PerimeterGenerator::lower_slices</a></div><div class="ttdeci">const ExPolygonCollection * lower_slices</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:42</div></div>
<div class="ttc" id="libslic3r_8h_html"><div class="ttname"><a href="libslic3r_8h.html">libslic3r.h</a></div></div>
<div class="ttc" id="_print_config_8hpp_html"><div class="ttname"><a href="_print_config_8hpp.html">PrintConfig.hpp</a></div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a762eb39e6ca12297fe06982065d7a54a"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a762eb39e6ca12297fe06982065d7a54a">Slic3r::PerimeterGenerator::slices</a></div><div class="ttdeci">const SurfaceCollection * slices</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:41</div></div>
<div class="ttc" id="class_slic3r_1_1_surface_collection_html"><div class="ttname"><a href="class_slic3r_1_1_surface_collection.html">Slic3r::SurfaceCollection</a></div><div class="ttdef"><b>Definition:</b> SurfaceCollection.hpp:10</div></div>
<div class="ttc" id="class_slic3r_1_1_flow_html"><div class="ttname"><a href="class_slic3r_1_1_flow.html">Slic3r::Flow</a></div><div class="ttdoc">Represents material flow; provides methods to predict material spacing. </div><div class="ttdef"><b>Definition:</b> Flow.hpp:26</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_loop_html"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator_loop.html">Slic3r::PerimeterGeneratorLoop</a></div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:15</div></div>
<div class="ttc" id="namespace_slic3r_html_ac070ff2d90c6488a48adf1814cdae06c"><div class="ttname"><a href="namespace_slic3r.html#ac070ff2d90c6488a48adf1814cdae06c">Slic3r::Polygons</a></div><div class="ttdeci">std::vector&lt; Polygon &gt; Polygons</div><div class="ttdef"><b>Definition:</b> Polygon.hpp:13</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a865ecb7073c6e5c49450780601fa5978"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a865ecb7073c6e5c49450780601fa5978">Slic3r::PerimeterGenerator::ext_perimeter_flow</a></div><div class="ttdeci">Flow ext_perimeter_flow</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:46</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_loop_html_aa528ebebf3d5c47e57f56cb5a2509bdb"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator_loop.html#aa528ebebf3d5c47e57f56cb5a2509bdb">Slic3r::PerimeterGeneratorLoop::is_external</a></div><div class="ttdeci">bool is_external() const</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:31</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a8db5bfc53490dca111e6662d0d0b4a5b"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a8db5bfc53490dca111e6662d0d0b4a5b">Slic3r::PerimeterGenerator::process</a></div><div class="ttdeci">void process()</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.cpp:10</div></div>
<div class="ttc" id="_flow_8hpp_html"><div class="ttname"><a href="_flow_8hpp.html">Flow.hpp</a></div></div>
<div class="ttc" id="_polygon_8hpp_html"><div class="ttname"><a href="_polygon_8hpp.html">Polygon.hpp</a></div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a2f5219586fbedfa7809dc078a850b2ea"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a2f5219586fbedfa7809dc078a850b2ea">Slic3r::PerimeterGenerator::PerimeterGenerator</a></div><div class="ttdeci">PerimeterGenerator(const SurfaceCollection *slices, double layer_height, Flow flow, PrintRegionConfig *config, PrintObjectConfig *object_config, PrintConfig *print_config, ExtrusionEntityCollection *loops, ExtrusionEntityCollection *gap_fill, SurfaceCollection *fill_surfaces)</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:57</div></div>
<div class="ttc" id="class_slic3r_1_1_extrusion_entity_collection_html"><div class="ttname"><a href="class_slic3r_1_1_extrusion_entity_collection.html">Slic3r::ExtrusionEntityCollection</a></div><div class="ttdef"><b>Definition:</b> ExtrusionEntityCollection.hpp:10</div></div>
<div class="ttc" id="class_slic3r_1_1_print_config_html"><div class="ttname"><a href="class_slic3r_1_1_print_config.html">Slic3r::PrintConfig</a></div><div class="ttdef"><b>Definition:</b> PrintConfig.hpp:410</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a1bd9ddce53f93513b485142ca575dbe7"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a1bd9ddce53f93513b485142ca575dbe7">Slic3r::PerimeterGenerator::gap_fill</a></div><div class="ttdeci">ExtrusionEntityCollection * gap_fill</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:54</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_loop_html_ad868bfeb1cab8525d3222a8f0bc1b339"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator_loop.html#ad868bfeb1cab8525d3222a8f0bc1b339">Slic3r::PerimeterGeneratorLoop::is_internal_contour</a></div><div class="ttdeci">bool is_internal_contour() const</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.cpp:543</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html">Slic3r::PerimeterGenerator</a></div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:38</div></div>
<div class="ttc" id="_ex_polygon_collection_8hpp_html"><div class="ttname"><a href="_ex_polygon_collection_8hpp.html">ExPolygonCollection.hpp</a></div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_aff9a14ec9dd21936c66064106046f22f"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#aff9a14ec9dd21936c66064106046f22f">Slic3r::PerimeterGenerator::loops</a></div><div class="ttdeci">ExtrusionEntityCollection * loops</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:53</div></div>
<div class="ttc" id="_surface_collection_8hpp_html"><div class="ttname"><a href="_surface_collection_8hpp.html">SurfaceCollection.hpp</a></div></div>
<div class="ttc" id="class_slic3r_1_1_ex_polygon_collection_html"><div class="ttname"><a href="class_slic3r_1_1_ex_polygon_collection.html">Slic3r::ExPolygonCollection</a></div><div class="ttdef"><b>Definition:</b> ExPolygonCollection.hpp:14</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a1e2ebc75a65d57e82a42fc9922808e23"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a1e2ebc75a65d57e82a42fc9922808e23">Slic3r::PerimeterGenerator::layer_id</a></div><div class="ttdeci">int layer_id</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:44</div></div>
<div class="ttc" id="namespace_slic3r_html_ae215fce7feff06e36add3d6f37bfcd27"><div class="ttname"><a href="namespace_slic3r.html#ae215fce7feff06e36add3d6f37bfcd27">Slic3r::ThickPolylines</a></div><div class="ttdeci">std::vector&lt; ThickPolyline &gt; ThickPolylines</div><div class="ttdef"><b>Definition:</b> Polyline.hpp:16</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_loop_html_aecdf6e4734ac148fe16601d1cea65c50"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator_loop.html#aecdf6e4734ac148fe16601d1cea65c50">Slic3r::PerimeterGeneratorLoop::polygon</a></div><div class="ttdeci">Polygon polygon</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:18</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_loop_html_ad8c6733fb666837d391e29075456a38d"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator_loop.html#ad8c6733fb666837d391e29075456a38d">Slic3r::PerimeterGeneratorLoop::is_contour</a></div><div class="ttdeci">bool is_contour</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:21</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a10b1dfc6771ad4f17350e1cb135acab4"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a10b1dfc6771ad4f17350e1cb135acab4">Slic3r::PerimeterGenerator::object_config</a></div><div class="ttdeci">PrintObjectConfig * object_config</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:50</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a56b008bb63b6a19019bd7f02369d788e"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a56b008bb63b6a19019bd7f02369d788e">Slic3r::PerimeterGenerator::perimeter_flow</a></div><div class="ttdeci">Flow perimeter_flow</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:45</div></div>
<div class="ttc" id="namespace_slic3r_html"><div class="ttname"><a href="namespace_slic3r.html">Slic3r</a></div><div class="ttdef"><b>Definition:</b> BoundingBox.cpp:4</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_loop_html_adaaece277fd3d568edbb3568aac5cf03"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator_loop.html#adaaece277fd3d568edbb3568aac5cf03">Slic3r::PerimeterGeneratorLoop::depth</a></div><div class="ttdeci">unsigned short depth</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:23</div></div>
<div class="ttc" id="namespace_slic3r_html_aa0fe88d48b85b2859e710c114c5b76cc"><div class="ttname"><a href="namespace_slic3r.html#aa0fe88d48b85b2859e710c114c5b76cc">Slic3r::ExtrusionRole</a></div><div class="ttdeci">ExtrusionRole</div><div class="ttdoc">Each ExtrusionRole value identifies a distinct set of { extruder, speed }. </div><div class="ttdef"><b>Definition:</b> ExtrusionEntity.hpp:16</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_acaad2e06b061a4da14038dffac26d3d5"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#acaad2e06b061a4da14038dffac26d3d5">Slic3r::PerimeterGenerator::fill_surfaces</a></div><div class="ttdeci">SurfaceCollection * fill_surfaces</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:55</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_loop_html_a27cf76d469aaa41d40e3ab5874d9604d"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator_loop.html#a27cf76d469aaa41d40e3ab5874d9604d">Slic3r::PerimeterGeneratorLoop::children</a></div><div class="ttdeci">std::vector&lt; PerimeterGeneratorLoop &gt; children</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:25</div></div>
<div class="ttc" id="class_slic3r_1_1_polygon_html"><div class="ttname"><a href="class_slic3r_1_1_polygon.html">Slic3r::Polygon</a></div><div class="ttdef"><b>Definition:</b> Polygon.hpp:16</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_a07e2d8fc28c8bb83ca630bd64e89325c"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#a07e2d8fc28c8bb83ca630bd64e89325c">Slic3r::PerimeterGenerator::overhang_flow</a></div><div class="ttdeci">Flow overhang_flow</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:47</div></div>
<div class="ttc" id="class_slic3r_1_1_print_object_config_html"><div class="ttname"><a href="class_slic3r_1_1_print_object_config.html">Slic3r::PrintObjectConfig</a></div><div class="ttdef"><b>Definition:</b> PrintConfig.hpp:155</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_loop_html_a060905e20e114a553da665a1a65fe88d"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator_loop.html#a060905e20e114a553da665a1a65fe88d">Slic3r::PerimeterGeneratorLoop::PerimeterGeneratorLoop</a></div><div class="ttdeci">PerimeterGeneratorLoop(Polygon polygon, unsigned short depth)</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:27</div></div>
<div class="ttc" id="class_slic3r_1_1_print_region_config_html"><div class="ttname"><a href="class_slic3r_1_1_print_region_config.html">Slic3r::PrintRegionConfig</a></div><div class="ttdef"><b>Definition:</b> PrintConfig.hpp:231</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_aaeec28b31ab6da2ad2317a4bdd071382"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#aaeec28b31ab6da2ad2317a4bdd071382">Slic3r::PerimeterGenerator::print_config</a></div><div class="ttdeci">PrintConfig * print_config</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:51</div></div>
<div class="ttc" id="class_slic3r_1_1_perimeter_generator_html_abe42138ffcf2ad0447a04dd48f3a4d5d"><div class="ttname"><a href="class_slic3r_1_1_perimeter_generator.html#abe42138ffcf2ad0447a04dd48f3a4d5d">Slic3r::PerimeterGenerator::config</a></div><div class="ttdeci">PrintRegionConfig * config</div><div class="ttdef"><b>Definition:</b> PerimeterGenerator.hpp:49</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>
